//删除select列表中选中的选项
function deleted(obj) {
	if (obj == null) return;
	if (obj.tagName != "SELECT") return;
	for (var i=obj.options.length-1;i>=0;i--) {
		if (obj.options[i].selected && obj.options[i].added) {
			obj.removeChild(obj.options[i]);
		}
	}
}
//全选select列表中的选项
function selectAll(obj) {
	if (obj == null) return;
	if (obj.tagName != "SELECT") return;
	var length = obj.options.length;

	for (var i=0;i<length;i++) {
		obj.options[i].selected = true;
	}
}
//取消给定列表中的所有选中的选项
function selectNone(obj) {
	if (obj == null) return;
	if (obj.tagName != "SELECT") return;
	var length = obj.options.length;
	for (var i=0;i<length;i++) {
		obj.options[i].selected = false;
	}
}
//判断选项在列表中是否存在
function optionExists(obj,opt) {
	var length = obj.options.length;
	for (var i=0;i<length;i++) {
		if(typeof obj.options[i].id != 'undefined' && typeof opt.id != "undefined" && obj.options[i].id == opt.id){
			return true;
		}else if (obj.options[i].text == opt.text && obj.options[i].value == opt.value){
			return true;
		}
	}
	return false;	//如果不存在，则返回false
}
//将列表框fromList中选中的项添加到toList列表框中，不向toList中的添加重复项
function add(fromList,toList) {
	for (var i=0;i<fromList.options.length;i++) {
		if (fromList.options[i].selected) {		//如果选项被选中，则需要加入到obj2中。
                        //进行重复性检查
                        //如果toList列表框中存在指定的选项，进行下一个循环
			if (optionExists(toList,fromList.options[i])) {	
					continue;
			}
			var opt = fromList.options[i].cloneNode(false);
			opt.text = fromList.options[i].text;
            opt.value = fromList.options[i].value;
			toList.options.add(opt);		//将选项加入到toList中。
			fromList.options[i].added = true;
		}
	}
}
//排序，obj为列表框对象，order为排序属性，desc为是否倒序(true-倒序)，采用冒泡算法的改进算法
function orderList(obj,order,desc) {
	var chg = null;
	var flag = true;	//是否进行过交换的标志
	var m = null;
	var n = null;
	var len = obj.options.length - 1;
	for (var j=len;j>0;j--) {
		flag = true;
		for (var k=0;k<j;k++) {
			eval("m = parseFloat(obj.options[k]." + order + ");");
			eval("n = parseFloat(obj.options[k+1]." + order + ");");
			if (desc) {		//如果是倒序排列，则交换m和n
				var tt = m;
				m = n;
				n = tt;
			}
			if (m > n) {	//如果m > n 交换两个选项
				chg = obj.options[k].cloneNode(false);
				chg.text = obj.options[k].text;
				obj.options[k] = obj.options[k+1].cloneNode(false);
				obj.options[k].text = obj.options[k+1].text;
				obj.options[k+1] = chg.cloneNode(false);
				obj.options[k+1].text = chg.text;
				flag = false;		//交换过，设为false
			}
		}
		if (flag) break;		//如果一次都没有交还，则退出
	}
}
//事件处理
function doEvent(fromListId, toListId, isSelectAll) {
        if(fromListId == toListId) return;
        var fromList = document.getElementById(fromListId);
        var toList = document.getElementById(toListId);
	if (fromList == null || fromList.tagName != "SELECT" || toList == null || toList.tagName != "SELECT") return;
    
	if (isSelectAll == true) {		//如果需要全部选择
		selectAll(fromList);
	}
	add(fromList, toList);		//在toList中添加fromList中选中的项
    	deleted(fromList);	        //删除fromList移动到toList的选项
}
//处理单击事件
function doClick(fromListId, toListId, isAll) {
	doEvent(fromListId, toListId, isAll);
}
//处理双击事件
function doDblClick(fromListId, toListId) {
	doEvent(fromListId, toListId, false);
}
